import {Body, Controller, Get, Post, Query, Req} from "@nestjs/common";
import {AcceptDto, FriendDto} from "./friend.dto";
import {FriendService} from "./friend.service";

@Controller('/friend')
export class FriendController{
    constructor(
        private  readonly friendService: FriendService
    ) {}
    //添加好友
    @Post('/request')
    async addFriend(@Req() req, @Body() friendDto: FriendDto){
        const im_id = req.user.im_id;
        return await this.friendService.addFriend(im_id, friendDto);
    }

    //同意好友请求
    @Post('/accept')
    async accept(@Req() req, @Body() acceptDto: AcceptDto){
        const to_im_id = req.user.im_id;              // 接收方（当前用户）
        const from_im_id = acceptDto.im_id;           // 发出请求的用户
        return await this.friendService.accept({ to_im_id, from_im_id });
    }

    //拉黑好友
    @Post('/block')
    async block(@Req() req, @Body() acceptDto: AcceptDto){
        const from_im_id  = req.user.im_id;
        const to_im_id = acceptDto.im_id
        return await this.friendService.block({to_im_id, from_im_id})
    }

    //查询收到的请求
    @Get('/requests/received')
    async getIncomingFriendRequests(@Req() req){
        const im_id = req.user.im_id;
        return this.friendService.getIncomingFriendRequests(im_id);
    }

    //查询发送的请求
    @Get('/requests/sent')
    async getOutgoingFriendRequests(@Req() req){
        const im_id = req.user.im_id;
        return this.friendService.getOutgoingFriendRequests(im_id);
    }

    //查询指定联系人信息
    @Get('/search')
    async searchFriend(@Query() acceptDto: AcceptDto){
      const im_id = acceptDto.im_id;
      return await this.friendService.searchFriend(im_id)
    }


    //查询当前用户联系人列表
    @Get('/search/contact')
    async searchContactList(@Req() req){
      const im_id = req.user.im_id;
      return await this.friendService.searchContactList(im_id)
    }

    //查询当前联系人聊天类容
    @Get('/search/chat')
    async searchChat(@Req() req, @Query()acceptDto: AcceptDto){
        const user_im_id = req.user.im_id;
        const im_id = acceptDto.im_id;
        return this.friendService.searchChat(user_im_id, im_id);
    }

}